package org.linlinjava.litemall.db.domain;

import com.baomidou.mybatisplus.annotation.*;
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.linlinjava.litemall.db.config.CurrencyDeserializer;

import java.math.BigDecimal;
import java.time.LocalDateTime;

/**
 * @auth :ply
 * @date 2024/5/17 10:55
 * @Description TODO
 * 配方规格数据配比表
 */
@Data
@TableName("lumiere_formula_specifications_data_proportioning")
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class LumiereFormulaSpecificationsDataProportioning {

    /**
     * id
     */
    @TableId(type = IdType.AUTO)
    private Integer id;

    /**
     * 原料id
     */
    private Integer materialId;

    private Integer materialClassificationId;

    /**
     * 配方规格id
     */
    private Integer formulaSpecificationsId;

    /**
     * 配方原料id
     */
    private Integer formulaMaterialId;
    /**
     * 原料类型
     */
    private Integer materialType;
    /**
     * 额外收费
     */
    @JsonDeserialize(using = CurrencyDeserializer.class)
    private BigDecimal surcharge;

    /**
     * 规格剂量
     */
    private Double specificationsDose;

    /**
     * 价格
     */
    private BigDecimal price;

    /**
     * 数量
     */
    private Integer quantity;

    /**
     * 计费条件
     */
    private Integer chargingCondition;

    /**
     * 数量上限
     */
    private Integer quantityRestrict;

    /**
     * 单位
     */
    private String unit;

    /**
     * 组
     */
    private Integer groupName;

    private String makeUnit;

    /**
     * 组颜色
     */
    private String groupColor;

    /**
     * 消耗系数
     */
    private BigDecimal consumeSystem;

    /**
     * 计费方式
     */
    private Integer chargingMode;

    /**
     * 是否显示
     */
    private Boolean isDisplay;

    /**
     * 是否默认原配方
     */
    private Boolean isDefault = false;

    /**
     * 同步是否编辑
     */
    private Boolean isEdit;

    /**
     * 创建时间
     */
    @TableField(fill = FieldFill.INSERT) //插入时自动填充
    private LocalDateTime addTime;
    /**
     * 创建人
     */
    private String addUserId;
    /**
     * 修改时间
     */
    @TableField(fill = FieldFill.UPDATE) // 插入 和 更新时 自动填充
    private LocalDateTime updateTime;

    /**
     * 修改人
     */
    private String updateUserId;

    /**
     * 是否删除(0否 1是)
     */
    @TableLogic
    private Boolean deleted;

}
